package cn.stylefeng.guns.core.util;

import java.util.List;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import cn.stylefeng.roses.core.util.ToolUtil;

/**
 * 导出方法
 * @author zcx
 */
public class ExcelWrite {
	public static Workbook writeToExcelByList(String[] array, List<List<String>> list) {
        //创建工作薄
        Workbook wb = new XSSFWorkbook();
        //标题和页码
        CellStyle titleStyle = wb.createCellStyle();
        // 设置字体样式
        Font titleFont = wb.createFont();
        // 字体高度
        titleFont.setFontHeightInPoints((short) 12);
        // 字体样式
        titleFont.setFontName("黑体");
        titleStyle.setFont(titleFont);
        //创建sheet
        Sheet sheet = wb.createSheet("sheet1");
        // 自动设置宽度
        sheet.autoSizeColumn(0);
        // 在sheet中添加标题行// 行数从0开始
        Row row = sheet.createRow((int) 0);
        for (int i = 0; i < array.length; i++) {
            Cell cell = row.createCell(i);
            cell.setCellValue(array[i]);
            cell.setCellStyle(titleStyle);
        }
        // 数据样式 因为标题和数据样式不同 需要分开设置 不然会覆盖
        CellStyle dataStyle = wb.createCellStyle();
        //数据从序号1开始
        try {
            int index = 1;
            for (List<String> data : list) {
                // 默认的行数从0开始，为了统一格式设置从1开始，就是从excel的第二行开始
                row = sheet.createRow(index);
                index++;
                for (int j = 0; j < data.size(); j++) {
                	if(ToolUtil.isNotEmpty(data.get(j))) {
                		Cell cell = row.createCell(j);
                		// 为当前列赋值
                		cell.setCellValue(data.get(j));
                		//设置数据的样式
                		cell.setCellStyle(dataStyle);
                	} 
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return wb;
    }
}
